home *** CD-ROM | disk | FTP | other *** search
/ Aminet 15 / Aminet 15 - Nov 1996.iso / Aminet / dev / misc / libx11.lha / libX11 / gc.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-09-22  |  6.8 KB  |  233 lines

  1. /* Copyright (c) 1996 by Terje Pedersen.  All Rights Reserved   */
  2. /*                                                              */
  3. /* By using this code you will agree to these terms:            */
  4. /*                                                              */
  5. /* 1. You may not use this code for profit in any way or form   */
  6. /*    unless an agreement with the author has been reached.     */
  7. /*                                                              */
  8. /* 2. The author is not responsible for any damages caused by   */
  9. /*    the use of this code.                                     */
  10. /*                                                              */
  11. /* 3. All modifications are to be released to the public.       */
  12. /*                                                              */
  13. /* Thats it! Have fun!                                          */
  14. /* TP                                                           */
  15. /*                                                              */
  16.  
  17. /***
  18.    NAME
  19.      gc
  20.    PURPOSE
  21.      
  22.    NOTES
  23.      
  24.    HISTORY
  25.      Terje Pedersen - Jul 14, 1996: Created.
  26. ***/
  27.  
  28. #include <time.h>
  29. #include <intuition/intuition.h>
  30. #include <proto/intuition.h>
  31.  
  32. #include <dos.h>
  33. #include <signal.h>
  34. #include <stdlib.h>
  35. #include <stdio.h>
  36.  
  37. #include "libX11.h"
  38. #define XLIB_ILLEGAL_ACCESS 1
  39.  
  40. #include <X11/Xutil.h>
  41. #include <X11/Intrinsic.h>
  42.  
  43. /* externals */
  44.  
  45. extern GC      amiga_gc;
  46. extern struct Screen *wb;
  47.  
  48. /* funcs */
  49.  
  50. XCopyGC(display, src, valuemask, dest)
  51.      Display *display;
  52.      GC src;
  53.      unsigned long valuemask;
  54.      GC dest;
  55. {/*                 File 'sprayOp.o'*/
  56. #ifdef DEBUGXEMUL_ENTRY
  57.   printf("XCopyGC\n");
  58. #endif
  59.   if(valuemask&GCForeground) dest->values.foreground=src->values.foreground;
  60.   if(valuemask&GCBackground) dest->values.background=src->values.background;
  61.   if(valuemask&GCFunction) dest->values.function=src->values.function;
  62.   if(valuemask&GCFillStyle) dest->values.fill_style=src->values.fill_style;
  63.   if(valuemask&GCStipple) dest->values.line_style=src->values.line_style;
  64.   if(valuemask&GCFont) dest->values.font=src->values.font;
  65.   return(0);
  66. }
  67.  
  68. GC XCreateGC(display, drawable, valuemask, values)
  69.      Display *display;
  70.      Drawable drawable;
  71.      unsigned long valuemask;
  72.      XGCValues *values;
  73. {
  74.   GC agcs;
  75.   agcs=calloc(sizeof(struct _XGC),1);
  76. #ifdef DEBUGXEMUL_ENTRY
  77.   printf("(display)XCreateGC %d\n",agcs);
  78. #endif
  79.   agcs->values.foreground=0;
  80.   agcs->values.background=0;
  81.   agcs->values.line_width=1;
  82.   agcs->values.function=GXcopy;
  83.   agcs->values.font=(unsigned long)wb->RastPort.Font;
  84.   agcs->values.subwindow_mode=X11NewGC(agcs);
  85.   if(valuemask&GCForeground) agcs->values.foreground=values->foreground;
  86.   if(valuemask&GCBackground) agcs->values.background=values->background;
  87.   if(valuemask&GCLineWidth) agcs->values.line_width=values->line_width;
  88.   if(valuemask&GCLineStyle) XSetLineAttributes(display,agcs,1,values->line_style,0,0);
  89.   if(valuemask&GCCapStyle) agcs->values.cap_style=values->cap_style;
  90.   if(valuemask&GCJoinStyle) agcs->values.join_style=values->join_style;
  91.   if(valuemask&GCFunction)   agcs->values.function=values->function;
  92.   if(valuemask&GCFont) agcs->values.font=values->font;
  93.   if(valuemask&GCFillStyle) agcs->values.fill_style=values->fill_style;
  94.   if(valuemask&GCStipple) agcs->values.line_style=values->line_style;
  95.   return(agcs);
  96. }
  97.  
  98. XFreeGC(display, gc)
  99.      Display *display;
  100.      GC gc;
  101. {
  102. #ifdef DEBUGXEMUL_ENTRY
  103.   printf("(events)XFreeGC %d\n",gc);
  104. #endif
  105.   X11GC[gc->values.subwindow_mode]=NULL;
  106.   free(gc);
  107.   return(0);
  108. }
  109.  
  110. XSetForeground(d,gc,pen)
  111.      Display *d;
  112.      struct _XGC *gc;
  113.      unsigned long pen;
  114. {
  115. #ifdef DEBUGXEMUL_ENTRY
  116.   printf("XSetForeground\n");
  117. #endif
  118.   gc->values.foreground=pen;
  119.   prevgc=(GC)-1;
  120. }
  121.  
  122. XSetBackground(d,gc,pen)
  123.      Display *d;
  124.      struct _XGC *gc;
  125.      unsigned long pen;
  126. #ifdef DEBUGXEMUL_ENTRY
  127.   printf("XSetBackground\n");
  128. #endif
  129.   gc->values.background=pen;
  130.   prevgc=(GC)-1;
  131. }
  132.  
  133. XSetState(display, gc, foreground, background, function,
  134.       plane_mask)
  135.      Display *display;
  136.      GC gc;
  137.      unsigned long foreground, background;
  138.      int function;
  139.      unsigned long plane_mask;
  140. {/*               File 'xvdial.o' */
  141. #ifdef DEBUGXEMUL_ENTRY
  142.   printf("XSetState\n");
  143. #endif
  144.   XSetForeground(display,gc,foreground);
  145.   XSetBackground(display,gc,foreground);
  146.   XSetFunction(display,gc,function);
  147.   XSetPlaneMask(display,gc,plane_mask);
  148.   return(0);
  149. }
  150.  
  151. GContext XGContextFromGC(gc)
  152.      GC gc;
  153. {
  154.   return gc->gid;
  155. }
  156.  
  157. Status XGetGCValues(display, gc, valuemask, values)
  158.      Display *display;
  159.      GC gc;
  160.      unsigned long valuemask;
  161.      XGCValues *values;
  162. {
  163. #if (DEBUGXEMUL_ENTRY)
  164.   printf("XGetGCValues\n");
  165. #endif
  166.   if(valuemask&GCFillStyle) values->fill_style=gc->values.fill_style;
  167.   if(valuemask&GCLineStyle) values->line_style=gc->values.line_style;
  168.   if(valuemask&GCLineWidth) values->line_width=gc->values.line_width;
  169.   if(valuemask&GCCapStyle) values->cap_style=gc->values.cap_style;
  170.   if(valuemask&GCJoinStyle) values->join_style=gc->values.join_style;
  171.   if(valuemask&GCFunction) values->function=gc->values.function;
  172.   if(valuemask&GCFont) values->font=gc->values.font;
  173.   if(valuemask&GCForeground) values->foreground=gc->values.foreground;
  174.   if(valuemask&GCBackground) values->background=gc->values.background;
  175.   
  176.   return(0);
  177. }
  178.  
  179. XSetTSOrigin(display, gc, ts_x_origin, ts_y_origin)
  180.      Display *display;
  181.      GC gc;
  182.      int ts_x_origin, ts_y_origin;
  183. {
  184. #if (DEBUGXEMUL_ENTRY)
  185.   printf("WARNING: XSetTSOrigin\n");
  186. #endif
  187.   gc->values.ts_x_origin=ts_x_origin;
  188.   gc->values.ts_y_origin=ts_y_origin;
  189.   return(0);
  190. }
  191.  
  192. XChangeGC(display, gc, valuemask, values)
  193.      Display *display;
  194.      GC gc;
  195.      unsigned long valuemask;
  196.      XGCValues *values;
  197. {/*               File 'bitmaps.o'*/
  198. #ifdef DEBUGXEMUL_ENTRY
  199.   printf("XChangeGC\n");
  200. #endif
  201.   if(valuemask&GCStipple) XSetStipple(display,gc,values->stipple);
  202.   else {
  203.     gc->values.stipple=0;
  204.     if(valuemask&GCTile) XSetTile(display,gc,values->tile);
  205.     else gc->values.tile=0;
  206.   }
  207.   if(valuemask&GCFillStyle) XSetFillStyle(display,gc,values->fill_style);
  208.   if(valuemask&GCLineStyle) XSetLineAttributes(display,gc,1,values->line_style,0,0);
  209.   if(valuemask&GCLineWidth) gc->values.line_width=values->line_width;
  210.   if(valuemask&GCCapStyle) gc->values.cap_style=values->cap_style;
  211.   if(valuemask&GCJoinStyle) gc->values.join_style=values->join_style;
  212.   if(valuemask&GCFunction) gc->values.function=values->function;
  213.   if(valuemask&GCFont) XSetFont(display,gc,values->font);
  214.   if(valuemask&GCForeground) XSetForeground(display,gc,values->foreground);
  215.   if(valuemask&GCBackground) XSetBackground(display,gc,values->background);
  216.   prevgc=(GC)-1;
  217.   return(0);
  218. }
  219.  
  220. XSetArcMode(display, gc, arc_mode)
  221.      Display *display;
  222.      GC gc;
  223.      int arc_mode;
  224. {/*             File 'do_arcs.o'*/
  225. #if (DEBUGXEMUL_ENTRY) || (DEBUGXEMUL_WARNING)
  226.   printf("WARNING: XSetArcMode\n");
  227. #endif
  228.   gc->values.arc_mode=arc_mode;
  229.   prevgc=(GC)-1;
  230.   return(0);
  231. }
  232.